package edu.njucm.herbiv.utils;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

/**
 * @Author ZhouHang
 * @Date 24/5/2 002
 */
public class FileUtils {
    /**
     * 返回文件内容, 读取失败则返回空字符串
     * */
    public static String readAll(String path) {
        String ret = "";
        try {
            ret = Files.readString(Paths.get(path));
        } catch (IOException e) {
            return "";
        }
        return ret;
    }

    /**
     * 删除文件
     * */
    public static boolean deleteFile(String fileName) {
        File file = new File(fileName);
        // 如果文件路径所对应的文件存在，并且是一个文件，则直接删除
        if (file.exists() && file.isFile()) {
            return file.delete();
        } else {
            return false;
        }
    }


    /**
     * 删除整个文件夹
     * */
    public static boolean deleteDirectory(String directoryPath) {
        // 如果dir不以文件分隔符结尾，自动添加文件分隔符
        if (!directoryPath.endsWith(File.separator))
            directoryPath = directoryPath + File.separator;
        File dirFile = new File(directoryPath);
        // 如果dir对应的文件不存在，或者不是一个目录，则退出
        if ((!dirFile.exists()) || (!dirFile.isDirectory())) {
            return false;
        }
        boolean flag = true;
        // 删除文件夹中的所有文件包括子目录
        File[] files = dirFile.listFiles();
        if (files != null) {
            for (File file : files) {
                // 删除子文件
                if (file.isFile()) {
                    flag = deleteFile(file.getAbsolutePath());
                    if (!flag)
                        break;
                }
                // 删除子目录
                else if (file.isDirectory()) {
                    flag = deleteDirectory(file.getAbsolutePath());
                    if (!flag)
                        break;
                }
            }
        }
        if (!flag) {
            return false;
        }
        return dirFile.delete();
    }
}
